package pd.struct.statement;

import java.util.Collection;

/**
 * Represents a type of statement.
 *
 * @author Joshua Swank
 */
public enum StatementType
{
    //Assertion is a special type of statement, so it is not listed here.
    
    /**
     * An assignment.
     */
    ASSIGNMENT,

    /**
     * A procedure call.
     */
    CALL,

    /**
     * A return statement.
     */
    RETURN,

    /**
     * A goto statement.
     */
    GOTO,

    /**
     * A block of statements.
     */
    BLOCK,

    /**
     * An if statement.
     */
    IF,

    /**
     * A switch statement.
     */
    SWITCH,

    /**
     * A while loop.
     */
    WHILE,

    /**
     * A do-while loop.
     */
    DO,

    /**
     * A for loop.
     */
    FOR;

    /**
     * Returns the statement as a string.
     *
     * @param params the parameters of the statement.
     * @return a string representing the statement.
     */
    public String toString( Collection<Object> params )
    {
        return this.toString();
    }
}
